package xin.marcher.module.common.enums.inventory;

import xin.marcher.module.common.exception.BaseErrorCodeEnum;

/**
 * 库存相关的异常枚举码
 */
public enum InventoryExceptionCode implements BaseErrorCodeEnum {

    /**
     * SQL执行异常
     */
    INVENTORY_SQL("3000", "SQL执行异常"),

    /**
     * 参数校验失败
     */
    PARAM_CHECK_ERROR("3001", "参数校验失败:{0}"),

    /**
     * 校验扣减明细
     */
    INVENTORY_DETAIL_CHECK_ERROR("3002", "库存扣减明细已存在，请勿重复扣减"),
    /**
     * 库存不足
     */
    INVENTORY_INSUFFICIENT_ERROR("3003", "库存不足"),
    /**
     * 校验扣减明细
     */
    INVENTORY_DETAIL_NULL_ERROR("3004", "库存扣减明细不存在"),
    /**
     * 查询参数数量限制
     */
    PRODUCT_QUERY_CHECK_ERROR("3005", "查询卖家商品库存，商品数量不能超过100"),

    /**
     * CACHE执行异常
     */
    INVENTORY_CACHE("3006", "缓存执行异常"),


    /**
     * 分桶下线请求错误
     */
    BUCKET_OFFLINE_REQUEST_ERROR("3007", "分桶下线请求错误"),
    /**
     * 库存扣减的自增序列号
     */
    INVENTORY_NO_GEN_ERROR("3008", "库存扣减自增分段号申请失败"),

    /**
     * 卖家ID 不存在
     */
    SELLER_ID_IS_NULL("3009", "卖家ID不能为空"),
    /**
     * 用户ID不能为空
     */
    USER_ID_IS_NULL("3010", "用户ID不能为空"),

    /**
     * 订单号不能为空
     */
    ORDER_ID_IS_NULL("3011", "订单号不能为空"),

    /**
     * skuId不能为空
     */
    SKU_ID_IS_NULL("3012", "skuId不能为空"),
    /**
     * refundNo不能为空
     */
    REFUND_NO_IS_NULL("3013", "退款流水号不能为空"),

    /**
     * 库存变动数量不能为空
     */
    INVENTORY_NUM_IS_NULL("3014", "库存变动数量不能为空"),


    /**
     * 库存变动明细缓存key不能为空
     */
    INVENTORY_KEY_IS_NULL("3015", "库存变动明细缓存key不能为空"),
    ;


    private final String errorCode;
    private final String errorDesc;

    InventoryExceptionCode(String errorCode, String errorDesc) {
        this.errorCode = errorCode;
        this.errorDesc = errorDesc;
    }

    @Override
    public String toString() {
        return errorCode + "-" + errorDesc;
    }

    @Override
    public String getErrorCode() {
        return errorCode;
    }

    @Override
    public String getErrorMsg() {
        return errorDesc;
    }
}
